汽车UDS诊断之诊断设备在线服务(0x3E)深度剖析 | 您所在的位置:网站首页 › uds 0x31服务 › 汽车UDS诊断之诊断设备在线服务(0x3E)深度剖析 |
TesterPresent就是诊断设备在线服务,它是最简单的一个诊断服务。 诊断设备在线 服务描述TesterPresent客户端向某服务端请求来确认此服务端是否在线,客户端有没有跟服务端连接上。 目录 1.英文术语 2.缩写表 3.服务描述 4.请求消息定义 4.1.请求消息子功能定义 4.2.请求消息数据参数定义 5.肯定响应消息定义 5.1.肯定响应消息数据参数定义 6.否定响应消息定义 6.1.否定响应码 7.服务使用示例 7.1.示例#1-诊断设备在线(抑制肯定响应位 = 假) 7.1.1.步骤1:诊断设备在线请求 7.1.2.操作汇总 7.2.示例#2-诊断设备在线(抑制肯定响应位 = 真) 7.2.1.步骤1:诊断设备在线请求 7.2.2.操作汇总 1.英文术语 英文术语翻译TesterPresent诊断设备在线TesterPresent Request SID诊断设备在线请求SID ISO14229定义此值为0x3E sub-function子功能zeroSubFunction零子功能TesterPresent Response SID诊断设备在线响应SID ISO14229定义此值为(0x3E+0x40) 2.缩写表 缩写解释SID服务标识符Cvt约定值 M 强制的 C 有条件的 U 用户选项 NRC否定响应码 3.服务描述诊断设备在线服务就是客户端用来确认无服务端是否在线的操作,利用此服务可实现客户端与服务端的一次“握手”。可以直接理解就是 客户端给服务端发诊断设备在线请求消息(问候一下“你好吗 诊断设备在线服务还有一个特殊功能:如果服务端可以在非默认会话模式下,再去请求此服务时,服务端就可以保留在此非默认会话模式下,其实就是将诊断会话计时器 注:这个特殊功能其实并不是在我们这个服务里边做的,而是诊断会话服务中本身具有的一项特性,即有除诊断会话服务以外的其他诊断请求指令时,而且服务器当前处于非默认会话模式下,诊断会话计时器就是重新进行计时5000ms,这样我们去诊断设备在线请求时,也就是在这个“其他诊断请求指令”之内。 服务白话解读:“我叫你一声,你答应就完了” 4.请求消息定义 请求消息定义A_Data字节参数名称Cvt字节值助记符#1诊断设备在线请求SIDM0x3ETP#2子功能=[零子功能]M0x00/0x80LEV_ZSUBF注:子功能字节为0x80表示服务器不能去发肯定响应,即使服务器正常去响应请求,也不能发肯定响应消息。 4.1.请求消息子功能定义该服务使用子功能参数选择(此字节的bit7表示抑制肯定响应位,下表并没有介绍此位)。 请求消息子功能定义位6-0描述Cvt助记符0x00零子功能 该值表示此服务不支持除抑制肯定响应消息指示位之外的子功能值。此服务其实是没有子功能字节的,但是因为它需要设置一个抑制肯定响应位(来控制服务器是否需要发出肯定响应消息),所以我们这个服务就设置一个子功能字节,而0-6bit位本身没有实际意义,ISO14229就用0x00来强制规定一下,其他值目前还是没有定义的。 MZSUBF0x01-0x7FISOSAEReserved 该值为本文件为未来定义预留。 MISOSAERESRVD 4.2.请求消息数据参数定义此服务中请求消息中没有数据参数。 5.肯定响应消息定义 肯定响应消息定义A_Data字节参数名称Cvt字节值助记符#1诊断设备在线响应SIDM0x7ETPPR#2子功能 = [零子功能]M0x00 LEV_ZSUBF 5.1.肯定响应消息数据参数定义 肯定响应消息数据参数定义定义零子功能 此参数与请求消息的子功能参数的位6~0相同。 6.否定响应消息定义 否定响应消息定义A_Data字节参数名称字节值Cvt助记符#1否定响应SID0x7FMSIDNR#2诊断设备在线请求SID0x3EMSIDRQ#3否定响应码0xXXMNRC_ 6.1.否定响应码 此服务支持的否定响应码否定响应码描述助记符0x12子功能不支持 如果不支持子功能参数,则应发送此否定响应码。 SFNS0x13消息长度错误或格式无效 如果消息的长度错误,则应发送此否定响应码。 IMLOIF 7.服务使用示例 7.1.示例#1-诊断设备在线(抑制肯定响应位 = 假) 7.1.1.步骤1:诊断设备在线请求确认服务端有没有跟客户端连接上 诊断设备在线请求消息 消息方向 客户端→服务端 消息类型 请求 A_Data字节 描述(所以值为16进制) 字节值 助记符 #1 诊断设备在线请求SID 0x3E TP #2 子功能 = 零子功能 抑制肯定响应位 = 假 0x00 ZSUBF诊断设备在线响应消息 消息方向 服务端→客户端 消息类型 响应 A_Data字节 描述(所以值为16进制) 字节值 助记符 #1 诊断设备在线响应SID 0x7E TPPR #2 子功能 = 零子功能 0x00 ZSUBF注意:响应报文是不会有抑制肯定响应位的。 7.1.2.操作汇总步骤1:诊断设备在线请求 图解: 操作CAN报文实体01234567诊断设备在线请求0x020x3E0x00 客户端肯定响应0x020x7E0x00 服务端 7.2.示例#2-诊断设备在线(抑制肯定响应位 = 真) 7.2.1.步骤1:诊断设备在线请求确认服务端有没有跟客户端连接上 诊断设备在线请求消息 消息方向 客户端→服务端 消息类型 请求 A_Data字节 描述(所以值为16进制) 字节值 助记符 #1 诊断设备在线请求SID 0x3E TP #2 子功能 = 零子功能 抑制肯定响应位 = 真 0x80 ZSUBF这时候服务端不会发送肯定响应(其实这时候也无法判定服务端是在线的,因为服务端都没有响应了,客户端无法确认服务端是否响应了自己的请求)。 7.2.2.操作汇总步骤1:诊断设备在线请求 图解: 操作CAN报文实体01234567诊断设备在线请求0x020x3E0x80 客户端到这里我们的0x3E服务基本学完了。 以上解释有没有解决大家的疑惑,如果还是觉得有疑惑的地方,欢迎大家踊跃提出,一起分享,共同进步!!! 有CSDN号的也可以帮忙点个关注,我会陆续更新其它UDS服务。 |
CopyRight 2018-2019 实验室设备网 版权所有 |